﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sistema_financiero
{
    public partial class frm_Buscar_Prestamo : Form
    {
        public List<Entidades.Prestamo> Lista_todos_prestamos = new List<Sistema_financiero.Entidades.Prestamo>();
        public List<Entidades.Prestamo> Lista_todos_prestamos_res = new List<Sistema_financiero.Entidades.Prestamo>();
        public List<Entidades.Prestamo> Lista_todos_prestamos_completa = new List<Sistema_financiero.Entidades.Prestamo>();
        public Entidades.Prestamo Prestamo_seleccionado = new Sistema_financiero.Entidades.Prestamo();
        public string texto_anterior;
        public bool Busqueda_nombres;
        public bool Aceptar;

        private void frm_Buscar_Prestamo_Load(object sender, EventArgs e)
        {
            btn_Aceptar.Enabled = false;
            Lista_todos_prestamos_completa = Lista_prestamos();
            Lista_todos_prestamos_res = Lista_todos_prestamos_completa;
            dgv_Busqueda_Prestamo.DataSource = Lista_todos_prestamos_res;

            if (dgv_Busqueda_Prestamo.RowCount > 0)
            {
                dgv_Busqueda_Prestamo.CurrentCell = dgv_Busqueda_Prestamo.Rows[0].Cells[1];
            }
            /*
            dgv_Busqueda_Prestamo.Columns[10].HeaderText = "Nº de documento";
            dgv_Busqueda_Prestamo.Columns[25].HeaderText = "Fecha de ingreso";
            dgv_Busqueda_Prestamo.Columns[0].Visible = false;
            dgv_Busqueda_Prestamo.Columns[3].Visible = false;
            dgv_Busqueda_Prestamo.Columns[4].Visible = false;
            dgv_Busqueda_Prestamo.Columns[5].Visible = false;
            dgv_Busqueda_Prestamo.Columns[6].Visible = false;
            dgv_Busqueda_Prestamo.Columns[7].Visible = false;
            dgv_Busqueda_Prestamo.Columns[9].Visible = false;
            dgv_Busqueda_Prestamo.Columns[11].Visible = false;
            dgv_Busqueda_Prestamo.Columns[12].Visible = false;
            dgv_Busqueda_Prestamo.Columns[13].Visible = false;
            dgv_Busqueda_Prestamo.Columns[14].Visible = false;
            dgv_Busqueda_Prestamo.Columns[15].Visible = false;
            dgv_Busqueda_Prestamo.Columns[16].Visible = false;
            dgv_Busqueda_Prestamo.Columns[17].Visible = false;
            dgv_Busqueda_Prestamo.Columns[18].Visible = false;
            dgv_Busqueda_Prestamo.Columns[19].Visible = false;
            dgv_Busqueda_Prestamo.Columns[20].Visible = false;
            dgv_Busqueda_Prestamo.Columns[21].Visible = false;
            dgv_Busqueda_Prestamo.Columns[22].Visible = false;
            dgv_Busqueda_Prestamo.Columns[23].Visible = false;
            dgv_Busqueda_Prestamo.Columns[24].Visible = false;
            dgv_Busqueda_Prestamo.Columns[26].Visible = false;
            */
            Busqueda_nombres = Tipo_busqueda(rbtn_Nombre_apellido, rbtn_Numero_prestamo);
            dgv_Busqueda_Prestamo.AutoResizeColumns();
            texto_anterior = "";
            Enable_disable_aceptar(dgv_Busqueda_Prestamo.Rows.Count);
            Aceptar = false;
        }

        public frm_Buscar_Prestamo()
        {
            InitializeComponent();
        }


        public List<Entidades.Prestamo> Lista_prestamos()
        {
            List<Entidades.Prestamo> Lista = new List<Sistema_financiero.Entidades.Prestamo>();
            Lista = Sistema_financiero.Entidades.Prestamo.Obtener_Todos_Prestamos_Pendientes();
            return Lista;
        }

        public List<Entidades.Prestamo> Lista_prestamos(string Filtro, List<Entidades.Prestamo> Lista)
        {

            List<Entidades.Prestamo> Lista_res = new List<Sistema_financiero.Entidades.Prestamo>();

            if (Busqueda_nombres == true)
            {
                foreach (Entidades.Prestamo P in Lista)
                {
                    if ((P.Nombre_cliente.ToLower().Contains(Filtro.ToLower())) || (P.Apellido_cliente.ToLower().Contains(Filtro.ToLower())) || ((P.Nombre_cliente + " " + P.Nombre_cliente).ToLower().Contains(Filtro.ToLower())) || ((P.Apellido_cliente + " " + P.Nombre_cliente).ToLower().Contains(Filtro.ToLower())))
                    {
                        Lista_res.Add(P);
                    }
                }
            }
            else
            {
                foreach (Entidades.Prestamo P in Lista)
                {
                    string numero;
                    numero = Convert.ToString(P.ID);
                    if (numero.Contains(Filtro))
                    {
                        Lista_res.Add(P);
                    }
                }
            }

            return Lista_res;
        }

        public void Enable_disable_aceptar(int cantidad_filas)
        {
            if (cantidad_filas > 0)
            {
                btn_Aceptar.Enabled = true;
            }
            else
            {
                btn_Aceptar.Enabled = false;
            }
        }

        private void frm_Buscar_Prestamo_FormClosing(object sender, FormClosingEventArgs e)
        {
           
        }

        private void tbx_Buscar_TabIndexChanged(object sender, EventArgs e)
        {

        }

        private void tbx_Buscar_TextChanged(object sender, EventArgs e)
        {
            if (texto_anterior != null)
            {
                if (tbx_Buscar.Text.Contains(texto_anterior))
                {
                    Lista_todos_prestamos_res = Lista_prestamos(tbx_Buscar.Text, Lista_todos_prestamos_res);
                    dgv_Busqueda_Prestamo.DataSource = Lista_todos_prestamos_res;
                    texto_anterior = tbx_Buscar.Text;
                }
                else
                {
                    Lista_todos_prestamos_res = Lista_todos_prestamos_completa;
                    Lista_todos_prestamos_res = Lista_prestamos(tbx_Buscar.Text, Lista_todos_prestamos_res);
                    dgv_Busqueda_Prestamo.DataSource = Lista_todos_prestamos_res;
                    texto_anterior = tbx_Buscar.Text;
                }
            }
            else
            {
                Lista_todos_prestamos_res = Lista_todos_prestamos_completa;
                Lista_todos_prestamos_res = Lista_prestamos(tbx_Buscar.Text, Lista_todos_prestamos);
                dgv_Busqueda_Prestamo.DataSource = Lista_todos_prestamos_res;
                texto_anterior = tbx_Buscar.Text;
            }
            Enable_disable_aceptar(dgv_Busqueda_Prestamo.Rows.Count);

        }

        public bool Tipo_busqueda(RadioButton nombre, RadioButton documento)
        {
            if (nombre.Checked == true)
            {
                lbl_Buscar.Text = "Buscar cliente por nombre y apellido";
                return true;
            }
            else
            {
                lbl_Buscar.Text = "Buscar por Nº de prestamo";
                return false;
            }
        }

        private void rbtn_Numero_prestamo_CheckedChanged(object sender, EventArgs e)
        {
            Busqueda_nombres = Tipo_busqueda(rbtn_Nombre_apellido, rbtn_Numero_prestamo);
            tbx_Buscar.Text = "";
            Lista_todos_prestamos_res = Lista_todos_prestamos_completa;
        }

        private void rbtn_Nombre_apellido_CheckedChanged(object sender, EventArgs e)
        {
            Busqueda_nombres = Tipo_busqueda(rbtn_Nombre_apellido, rbtn_Numero_prestamo);
            Lista_todos_prestamos_res = Lista_todos_prestamos_completa;
            Lista_todos_prestamos_res = Lista_prestamos(tbx_Buscar.Text, Lista_todos_prestamos_res);
            dgv_Busqueda_Prestamo.DataSource = Lista_todos_prestamos_res;
            tbx_Buscar.Text = "";
            texto_anterior = tbx_Buscar.Text;
        }

        private void tbx_Buscar_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Busqueda_nombres == false)
            {
                Control.Textbox_restricciones.Permitir_solo_numeros(e);
            }
        }

        private void btn_Aceptar_Click(object sender, EventArgs e)
        {
            string hora_alta;
            DateTime hora_alta_;
            Prestamo_seleccionado.ID = Convert.ToInt32(dgv_Busqueda_Prestamo[0, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.ID_cliente = Convert.ToInt32(dgv_Busqueda_Prestamo[1, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Apellido_cliente = Convert.ToString(dgv_Busqueda_Prestamo[2, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Nombre_cliente = Convert.ToString(dgv_Busqueda_Prestamo[3, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Importe = Convert.ToDecimal(dgv_Busqueda_Prestamo[4, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Instituto_informe = Convert.ToDecimal(dgv_Busqueda_Prestamo[5, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Sellado = Convert.ToDecimal(dgv_Busqueda_Prestamo[6, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Num_Cuotas = Convert.ToInt32(dgv_Busqueda_Prestamo[7, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.TEM = Convert.ToDecimal(dgv_Busqueda_Prestamo[8, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Comision_fija = Convert.ToDecimal(dgv_Busqueda_Prestamo[9, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Comision_x_cuota = Convert.ToDecimal(dgv_Busqueda_Prestamo[10, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Tasa_punitorio = Convert.ToDecimal(dgv_Busqueda_Prestamo[11, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Fecha_alta = Convert.ToDateTime(dgv_Busqueda_Prestamo[12, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);

            hora_alta = Convert.ToString(Convert.ToString(dgv_Busqueda_Prestamo[13, dgv_Busqueda_Prestamo.CurrentRow.Index].Value));
            if (hora_alta.Length > 8)
            {
                hora_alta = hora_alta.Remove(8);
            }
            hora_alta_ = Convert.ToDateTime(hora_alta);

            Prestamo_seleccionado.Hora_alta = hora_alta_.TimeOfDay;
            Prestamo_seleccionado.Descuento = Convert.ToDecimal(dgv_Busqueda_Prestamo[14, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            Prestamo_seleccionado.Alicuota_iva = Convert.ToDecimal(dgv_Busqueda_Prestamo[15, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
            
            Aceptar = true;
            this.Close();
            
        }

        private void dgv_Busqueda_Prestamo_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           
        }

        private void dgv_Busqueda_Prestamo_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_Busqueda_Prestamo.RowCount > 0)
            {
                string hora_alta;
                DateTime hora_alta_;
                Prestamo_seleccionado.ID = Convert.ToInt32(dgv_Busqueda_Prestamo[0, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.ID_cliente = Convert.ToInt32(dgv_Busqueda_Prestamo[1, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Apellido_cliente = Convert.ToString(dgv_Busqueda_Prestamo[2, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Nombre_cliente = Convert.ToString(dgv_Busqueda_Prestamo[3, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Importe = Convert.ToDecimal(dgv_Busqueda_Prestamo[4, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Instituto_informe = Convert.ToDecimal(dgv_Busqueda_Prestamo[5, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Sellado = Convert.ToDecimal(dgv_Busqueda_Prestamo[6, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Num_Cuotas = Convert.ToInt32(dgv_Busqueda_Prestamo[7, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.TEM = Convert.ToDecimal(dgv_Busqueda_Prestamo[8, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Comision_fija = Convert.ToDecimal(dgv_Busqueda_Prestamo[9, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Comision_x_cuota = Convert.ToDecimal(dgv_Busqueda_Prestamo[10, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Tasa_punitorio = Convert.ToDecimal(dgv_Busqueda_Prestamo[11, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Fecha_alta = Convert.ToDateTime(dgv_Busqueda_Prestamo[12, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);

                hora_alta = Convert.ToString(Convert.ToString(dgv_Busqueda_Prestamo[13, dgv_Busqueda_Prestamo.CurrentRow.Index].Value));
                if (hora_alta.Length > 8)
                {
                    hora_alta = hora_alta.Remove(8);
                }
                hora_alta_ = Convert.ToDateTime(hora_alta);

                Prestamo_seleccionado.Hora_alta = hora_alta_.TimeOfDay;
                Prestamo_seleccionado.Descuento = Convert.ToDecimal(dgv_Busqueda_Prestamo[14, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);
                Prestamo_seleccionado.Alicuota_iva = Convert.ToDecimal(dgv_Busqueda_Prestamo[15, dgv_Busqueda_Prestamo.CurrentRow.Index].Value);

                Aceptar = true;
                this.Close();
            }
        }

        private void frm_Buscar_Prestamo_FormClosing_1(object sender, FormClosingEventArgs e)
        {
            if (Aceptar == false)
            {
                Prestamo_seleccionado = null;
            }
        }

      
    }
}
